// src/windows/windowManager.js
const { app, BrowserWindow, ipcMain } = require('electron');
const path = require('path');
const Ps = require('ee-core/ps');
const isDev=Ps.isDev() ;
class WindowManager {
  constructor() {
    this.windows = {};
    this.setupIpcHandlers();
  }

  // 创建登录窗口
  createLoginWindow() {
    const loginWindow = new BrowserWindow({
      width: 400,
      height: 300,
      title: '用户登录',
      resizable: false,
      center: true,
      frame: false, // 无边框窗口
      transparent: true, // 透明窗口
      webPreferences: {
        nodeIntegration: true,
        contextIsolation: false,
        enableRemoteModule: true
      }
    });

    // 加载登录窗口页面
    if (isDev) {
      loginWindow.loadURL('http://192.168.30.171:8080/#/login');
    } else {
      loginWindow.loadFile(path.join(__dirname, '../login/login.html'));
    }

    // 保存窗口引用
    this.windows.login = loginWindow;
    console.log("=======================",this.windows.login)
    // 窗口关闭事件处理
    loginWindow.on('closed', () => {
      delete this.windows.login;
      app.quit();
    });
    return loginWindow;
  }

  // 创建主界面窗口
  createMainWindow() {
    const mainWindow = new BrowserWindow({
      width: 1200,
      height: 800,
      title: '应用主界面',
      center: true,
      webPreferences: {
        nodeIntegration: true,
        contextIsolation: false,
        enableRemoteModule: true
      }
    });

    // 加载主界面窗口页面
    if (isDev) {
      mainWindow.loadURL('http://localhost:7001/main');
    } else {
      mainWindow.loadFile(path.join(__dirname, '../main/main.html'));
    }

    // 保存窗口引用
    this.windows.main = mainWindow;

    // 窗口关闭事件处理
    mainWindow.on('closed', () => {
      delete this.windows.main;
      // 如果主窗口关闭，退出应用
      if (Object.keys(this.windows).length === 0) {
        app.quit();
      }
    });

    return mainWindow;
  }

  // 设置IPC通信处理程序
  setupIpcHandlers() {
    // 处理登录成功事件
    ipcMain.on('login-success', (event, data) => {
      const loginWindow = this.windows.login;
      const mainWindow = this.createMainWindow();
      
      // 登录窗口淡出动画
      loginWindow.webContents.send('start-fade-out');
      
      // 主窗口淡入动画
      mainWindow.webContents.send('start-fade-in');
      
      // 一段时间后关闭登录窗口
      setTimeout(() => {
        if (loginWindow) {
          loginWindow.close();
        }
      }, 500);
    });

    // 处理窗口关闭请求
    ipcMain.on('close-window', (event, windowName) => {
      if (this.windows[windowName]) {
        this.windows[windowName].close();
      }
    });
  }
}

module.exports = {
    WindowManager,
    windowManager : new WindowManager()
};
